package client.test.ihm;


import java.awt.FlowLayout;
import java.awt.Rectangle;
import java.rmi.ConnectException;
import java.rmi.RemoteException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import serveurChatRMI.rmi.interfaces.InterfaceSujetDiscussion;
import client.test.ImplAffichageClient;
import client.test.singleton.SingletonConnexion;

public class IHMChatClient {	
	
private JFrame fenetre;
private String titreSujet;
	

public void createChatWindow(InterfaceSujetDiscussion sd) {
	
		fenetre = new JFrame();
		
		//fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		fenetre.setSize(450, 500);
		fenetre.setLocation(300, 200);
		
		//creation du panel
		JPanel panel = new JPanel();
		panel.setLayout(new FlowLayout());
		
		fenetre.add(panel);
		
		JTextArea pseudoArea = new JTextArea(21,10);
		pseudoArea.setEditable(false);
		panel.add(pseudoArea);
	
		JTextArea textarea = new JTextArea(20,25);
		textarea.setEditable(false);
		JScrollPane ascenceur = new JScrollPane(textarea,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
		ascenceur.setBounds(new Rectangle(90, 30, 450, 80));
		panel.add(ascenceur);
		
		JTextField textField = new JTextField(25);
		panel.add(textField);
		
		JButton send = new JButton("Envoyer");
		panel.add(send);
		
		
        SingletonConnexion connect = SingletonConnexion.getInstance();
		

		try {
			ImplAffichageClient iac = new ImplAffichageClient(textarea, connect.getPseudo(), pseudoArea);
		
			//Recuperation du sujet demande
			//InterfaceSujetDiscussion sd = isf.obtientSujet(titreSujet);
		
			
			
		    if(sd!=null) {
		    	sd.inscription(iac);
		    }
		    //Si le sujet n'existe pas, on ne creer pas la fenetre (ne doit jamais arriver ... normalement)
		    //TODO Si le sujet n'existe plus, mieux gerer le probleme
		    else {
		    	JOptionPane.showMessageDialog(fenetre, "Le sujet n'existe plus", "Erreur", JOptionPane.WARNING_MESSAGE);
		    	throw new ConnectException("L'inscription n'a pas pu etre effectuee");
		    }
		    
		    
		    
		    fenetre.setTitle(sd.getName());
		    
		    
		    send.addActionListener(new SendAction(this, textField,iac, sd));
		    
		    send.addKeyListener(new SendAction(this, textField,iac, sd));
		    textField.addKeyListener(new SendAction(this, textField,iac, sd));
		    textarea.addKeyListener(new SendAction(this, textField,iac, sd));
		    pseudoArea.addKeyListener(new SendAction(this, textField,iac, sd));
			
			
			//Gestion de la desinscription a la fermeture de la fenetre
			fenetre.addWindowListener(new WindowListenerCloseChat(iac, sd));
			
			fenetre.setVisible(true);
			
		    
		} catch (RemoteException e) {
			JOptionPane.showMessageDialog(fenetre, "erreur de connexion avec le serveur", "Erreur", JOptionPane.WARNING_MESSAGE);
			e.printStackTrace();
		} 
		
		

		
		
	}

public JFrame getFenetre() {
	return fenetre;
}

public String getTitreSujet() {
	return titreSujet;
}
	
	
}
